package com.li.onjava8.concurrent.cf;

import com.li.onjava8.concurrent.utils.Machina;
import com.li.onjava8.concurrent.utils.Timer;

import java.util.concurrent.CompletableFuture;

/**
 * 我们可以消除中间变量并将操作链接在一起，就像我们使用Streams一样
 * @author li
 * @date 2023/10/30 17:42
 */
public class CompletableApplyChained {
    public static void main(String[] args) {
        Timer timer = new Timer();
        //thenApply: 同步操作，在当前线程中执行回调。
        CompletableFuture<Machina> future = CompletableFuture.completedFuture(new Machina(0))
                .thenApply(Machina::work)
                .thenApply(Machina::work)
                .thenApply(Machina::work)
                .thenApply(Machina::work);
        System.out.println(timer.duration());
    }
}
